IDOR (Insecure Direct Object References) یک نوع آسیبپذیری امنیتی است که در برنامههای تحت وب به وجود میآید. در این نوع حملات، یک حملهکننده توانایی دسترسی به منابع یا اشیاء مختلف در برنامه را دارد که به طور عمومی نباید دسترسی داشته باشد. این اشیاء ممکن است مثلاً اطلاعات کاربران دیگر، فایلهای محرمانه، صفحات محدود دسترسی و غیره باشند.
در حملات IDOR، حملهکننده با تغییر مقادیر درخواستها (مانند پارامترها، پارامترهای URL یا درخواستهای POST) تلاش میکند تا به اشیاء یا منابعی دسترسی پیدا کند که به طور عادی نباید دسترسی داشته باشد. این امر میتواند به انتشار اطلاعات حساس، دسترسی به حسابهای کاربری دیگران، تغییر اطلاعات یا حتی عملیات مخرب در برنامه منجر شود.
در پروژههای تحت تاثیر IDOR، اصولاً سه شرط زیر باید برقرار باشد:
1. **شناسایی مستقیم موجودیتها:** در برنامههای تحت وب، اشیاء یا موجودیتهای مختلف ممکن است با استفاده از شناسههای منحصربفرد (مثل شناسه کاربری یا شناسه محصول) مدیریت شوند. اگر برنامه به درستی اعتبارسنجی و کنترل دسترسی انجام ندهد، حملهکننده میتواند با تغییر شناسهها به اشیاءی دسترسی پیدا کند که نباید.
2. **عدم اعتبارسنجی دسترسی:** وقتی که برنامه برای اجازه دسترسی به اشیاء از شناسهها استفاده میکند، باید اطمینان حاصل شود که کاربر مجاز به دسترسی به آن اشیاء است. در صورت عدم انجام اعتبارسنجی مناسب، حملهکننده میتواند با تغییر شناسهها دسترسی به اشیاء محدود دسترسی را به دست آورد.
3. **عدم کنترل دسترسی:** حملهکننده با تغییر دادن مقادیر درخواستها به شیوهای که به طور نادرست اعتبارسنجی یا کنترل دسترسی انجام میشود، میتواند به منابع یا اطلاعاتی دسترسی پیدا کند که معمولاً دسترسی به آنها را ندارد.
در پروژههای تحت تاثیر این نوع حملات، تهیه و اجرای برنامهها با اعتبارسنجی قوی و مناسب برای دسترسی کاربران به منابع مختلف بسیار اهمیت دارد. از طریق کنترل و اعتبارسنجی صحیح دسترسیها و شناسهها، میتوان از وقوع حملات IDOR جلوگیری کرد. در مورد استفاده از فریمورکهای مشهور مانند Laravel نیز باید به این نکته توجه کرد که از توابع و ویژگیهای امنیتی این فریمورک بهره گرفته شود تا از حملات امنیتی جلوگیری شود.
برای مطالعه بیشتر و مشاهده مثال هایی از IDOR میتوانید به لینک زیر مراجعه کنید:
https://portswigger.net/web-security/access-control/idor
Comments list